package com.wjm.JavaSEAPI.date;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;

/**
 * Data:2022年07月04日
 * Author:wjm
 * Content: TimeZone抽象类介绍
 *
 *
 * TimeZone是一个抽象类，封装了关于时区的相关操作
 * 时区的唯一标识符是以字符串表示的 ID，Asia/Shanghai
 *
 */
public class TimeZoneDemo {
    public static void main(String[] args) {
        //获取当前系统的时区
        TimeZone timeZone = TimeZone.getDefault();


        //获取系统支持的所以时区（ID）
        String[] zones = TimeZone.getAvailableIDs();
        for (int i =0;i<zones.length;i++){
            System.out.println(zones[i]);
        }
        System.out.println(zones.length);


        //获取指定时区，如果输入的ID不存在或者有误，则得到的时区是GMT
        TimeZone timeZone1 = TimeZone.getTimeZone("America/New_York");
        System.out.println(timeZone1);



        /*
        * 将当前的北京时间转换为纽约时间
        * */
        //获取北京时间
        Calendar calendar = Calendar.getInstance();
        //设置当前时区
        calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        //设置时间
        calendar.set(2001,10,7,11,11,11);

        //获取纽约时区
        TimeZone timeZone2 = TimeZone.getTimeZone("America/New_York");
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //格式化输出时，按照指定的时区进行输出
        simpleDateFormat.setTimeZone(timeZone2);
        String time = simpleDateFormat.format(calendar.getTime());
        System.out.println(time);

    }
}
